from rest_framework import serializers

from goods.models import SKU



class CartSerializer(serializers.Serializer):

    sku_id = serializers.IntegerField(label='sku_id', required=True, min_value=1)
    count = serializers.IntegerField(label='数量', required=True, min_value=1)
    # 前端不是必传项
    selected = serializers.BooleanField(label='是否勾选', required=False, default=True)



    def validate(self, attrs):

        sku_id=attrs.get('sku_id')

        count=attrs.get('count')

        try:
            sku=SKU.objects.get(pk=sku_id)

        except SKU.DoesNotExist:

            raise serializers.ValidationError('商品不存在')


        if sku.stock<count:
            raise serializers.ValidationError('库存不足')


        return attrs



#coding:utf8
# from rest_framework import serializers
#
# from goods.models import SKU
#
#
# class CartSerializer(serializers.Serializer):
#
#     sku_id = serializers.IntegerField(label='sku_id', required=True, min_value=1)
#     count = serializers.IntegerField(label='数量', required=True, min_value=1)
#     # 前端不是必传项
#     selected = serializers.BooleanField(label='是否勾选', required=False, default=True)
#
#
#     def validate(self, attrs):
#
#         #1. 判断商品id是否存在
#         sku_id = attrs.get('sku_id')
#         try:
#             sku = SKU.objects.get(pk=sku_id)
#         except SKU.DoesNotExist:
#             raise serializers.ValidationError('商品不存在')
#
#         #2. 判断库存
#         count = attrs.get('count')
#
#         if sku.stock < count:
#             raise serializers.ValidationError('库存不足')
#
#
#         return attrs





class CartSKUSerializer(serializers.ModelSerializer):
    count = serializers.IntegerField(label='数量')
    selected = serializers.BooleanField(label='是否勾选')

    class Meta:
        model = SKU
        fields = ('id', 'count', 'name', 'default_image_url', 'price', 'selected')









class CartDeleteSerializer(serializers.Serializer):

    sku_id = serializers.IntegerField(label='sku_id', required=True)

    def validate(self, attrs):

        # 1. 判断商品id是否存在
        sku_id = attrs.get('sku_id')
        try:
            sku = SKU.objects.get(pk=sku_id)
        except SKU.DoesNotExist:
            raise serializers.ValidationError('商品不存在')

        return attrs